// 导入工具类
import utils from '@/utils/index';

/**
 * @exports
 * 封装上传
 * @param { String } url 上传接口地址 
 * @param { String } filePath 本地图片地址
 * @returns { Promise }
 */
export default function (url, filePath, otherData = {}) {
  return new Promise((reslove, reject) => {
    utils.loading("正在上传...");
    uni.uploadFile({
      url: url,
      filePath: filePath,
      header: {},
      formData: otherData,
      name: 'file',
      success: ({ statusCode, data }) => {
        const { code, result, message } = JSON.parse(data);
        if (statusCode === 200) {
          if (code === 200) {
            reslove({ result: result, filePath: filePath });
          } else {
            utils.toast(message);
            reject(null);
          }
        } else {
          utils.toast('网络错误');
          reject(null);
        }
      },
      complete: _ => uni.hideLoading(),
      fail: ({ errMsg }) => {
        if (errMsg === 'request:fail timeout') {
          uni.getNetworkType({
            success ({ networkType }) {
              networkType === 'wifi' && utils.toast('上传失败，请检查您的网络或者切换到4G网络重试');
              networkType === '4g' && utils.toast('上传失败，请重试.');
              (networkType !== '4g' && networkType !== 'wifi') && utils.toast('上传失败，请切换到4G网络重试');
              reject(null);
            },
            fail: err => {
              utils.toast('获取网络状态失败.');
              reject(err);
            }
          })
        } else {
          utils.toast('请求失败.');
          reject(null);
        }
      }
    });
  })
}